$(function() {

	// 初始化datagrid
	$('#roleDataGrid').datagrid({
		// 定义列
		columns : [ [ {
			field : 'ck',
			checkbox : true
		}, {
			field : 'name',
			title : '名称',
			width : 33.3,
		}, {
			field : 'code',
			title : '编码',
			width : 33.3,
		}, {
			field : 'description',
			title : '描述',
			width : 33.3,
		} ] ],
		url : 'role/dataGrid.action',
		// 分页工具栏
		pagination : true,
		// 行号
		rownumbers : true,
		// 列宽
		fitColumns : true,
		striped : true,
		fit : true,
		border : false,
		// 添加顶部工具栏
		toolbar : '#dataGridToolBar'
	});

	// 给datagrid工具条上的按钮绑定事件
	$('#addButt').bind('click', function() {
		initAddOrUpdateDlg();
		// 打开权限添加框
		$('#addOrUpdateDlg').data('editType', 'add');
		$('#addOrUpdateDlg').dialog('open').dialog('setTitle', '添加');
	});

	$('#updateButt').bind('click', function() {
		var selections = $('#roleDataGrid').datagrid('getSelections');
		if (selections.length == 1) {
			initAddOrUpdateDlg();
			// 打开权限添加框
			$('#addOrUpdateDlg').data('editType', 'update');
			// 如果有选中的条目，则将选中条目的值填充到form中
			$('#addOrUpdateForm').form('load', selections[0]);
			$('#addOrUpdateDlg').dialog('open').dialog('setTitle', '修改');
		} else if (selections.length == 0) {
			sendMessage('提示', '请选择需要修改的角色！');
		} else {
			sendMessage('提示', '只能选择一个需要修改的角色！');
		}

	});

	$('#delButt').bind('click', function() {
		var selections = $('#roleDataGrid').datagrid('getSelections');
		if (selections.length == 0) {
			sendMessage('提示', '请选择需要删除的角色！');
		} else {
			var ids = '';
			$.each(selections, function() {
				ids += this.id
				ids += ','
			})
			console.log(ids);
			$.ajax({
				url : 'role/delete.action',
				data : {
					'ids' : ids
				},
				success : function(result) {
					if (result.success) {
						$('#roleDataGrid').datagrid('reload');
						sendMessage('提示', '删除角色成功')
					}
				}
			})
		}

	});

	$('#grantButt').bind(
			'click',
			function() {
				var selections = $('#roleDataGrid').datagrid('getSelections');
				if (selections.length == 0) {
					sendMessage('提示', '请选择需要授权的角色！');
				} else if (selections.length == 1) {
					initGrantDlg(selections[0].id);
					$('#grantDlg').dialog('open').dialog('setTitle', '授权');
				} else {
					sendMessage('提示', '只能选择一个需要授权的角色！');

				}

			});

	// 给addOrUpdateDlg的底部按钮绑定事件
	$('#saveButt')
			.bind(
					'click',
					function() {
						var submitUrl;
						var successMsg;
						var failMsg;

						var isAdd = $('#addOrUpdateDlg').data('editType') == 'add' ? true
								: false;
						if (isAdd) {
							submitUrl = 'role/add.action';
							failMsg = '角色添加失败，原因如下：';
						} else {
							submitUrl = 'role/update.action';
							failMsg = '角色修改失败，原因如下：';
						}

						$('#addOrUpdateForm').form('submit', {
							url : submitUrl,
							onSubmit : function(data) {
								return $('#addOrUpdateForm').form('validate');
							},
							success : function(result) {
								result = $.parseJSON(result);
								if (result.success) {
									$('#addOrUpdateDlg').dialog('close');
									$('#addOrUpdateForm').form('clear');
									$('#roleDataGrid').datagrid('reload');
									sendMessage('提示', result.message);
								} else {
									var msg = failMsg;
									$.each(result.message, function(i, val) {
										msg += "<br>";
										msg += val;
									});
									sendMessage('提示', msg);
								}
							}
						});
					});
	$('#cancelButt').bind('click', function() {
		$('#addOrUpdateDlg').dialog('close');
	});
	
	
	$('#grantCancelButt').bind('click', function() {
		$('#grantDlg').dialog('close');
	});
	
	
	$('#grantUpdateButt').bind('click',function(){
		
		//当前编辑的角色
		var roleSelected = $('#roleDataGrid').datagrid('getSelections');
		//所有选择的权限
		var checkedRigths = $('#rigthsTree').tree('getChecked');
		//所有半选择的权限
		var relationCheckedRigths = $('#rigthsTree').tree('getChecked','indeterminate');
		//checkedRigths＋relationCheckedRigths
		var allCheckedRights = checkedRigths.concat(relationCheckedRigths);
		//拼选中的权限的id
		var rightsIds = '';
		$.each(checkedRigths,function(i,rigths){
			rightsIds+=rigths.id;
			rightsIds+=',';
		});
		$.ajax({
			url:'role/updateRoleRights.action',
			data:{id:roleSelected[0].id,ids:rightsIds},
			success:function(result){
				if(result.success){
					$('#grantDlg').dialog('close');
					sendMessage('提示', '更新权限成功！');
					
				}
			}
		});
		
		
	});

	// 初始化添加或修改框
	function initAddOrUpdateDlg() {
		$('#addOrUpdateDlg').dialog({
			width : 340,
			height : 220,
			modal : true,
			closed : true,
			collapsible : false,
			minimizable : false,
			maximizable : false,
			onBeforeOpen : function() {
				initForm();
			},
			// 关闭后清空form中input的值
			onClose : function() {
				$('#addOrUpdateForm').form('reset');
			},
			buttons : '#dlgButt'
		});
	}
	// 初始化赋权限框
	function initGrantDlg(roleId) {
		$('#grantDlg').dialog({
			width : 360,
			height : 420,
			modal : true,
			closed : true,
			collapsible : false,
			minimizable : false,
			maximizable : false,
			onBeforeOpen : function() {
				initRightsTree(roleId);
			},
			onClose : function() {
			},
			buttons : '#grantDlgButt'
		});
	}
	// 初始化权限树
	function initRightsTree(roleId) {
		$('#rigthsTree').tree({
			url : 'rights/getRightsCatalog.action',
			// 必须
			textFiled : 'name',
			// 必须
			idField : 'id',
			parentField : 'pid',
			checkbox:true,
			onLoadSuccess:function(){
				
				$.ajax({
					url : 'role/getRoleRights.action',
					data : {
						'id' : roleId
					},
					success : function(result) {
						if (result.length != 0) {
							$.each(result, function(i, rights) {
								var node = $('#rigthsTree').tree('find',rights.id);
								$('#rigthsTree').tree('check',node.target)
							});
						}
					}
				});
				
			}
		});
	}

	function initForm() {
		// 初始化添加框中input组件
		$('#nameInput').textbox({
			required : true,
		});
		$('#codeInput').textbox({
			required : true,
		});

		$('#descriptionInput').textbox({
			multiline : true,
			height : 60
		});
	}

	function sendMessage(title, msg) {
		$.messager.show({
			title : title,
			msg : msg,
			timeout : 6000,
			showType : 'slide'
		})
	}

});
